package com.cdn.clock.anno;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @author 蔡定努
 * 2024/06/03 11:45
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CLock {
    /**
     * 锁key，支持SPEL表达式
     *
     * @return {@link String[]}
     */
    String[] key() default {};

    /**
     * 释放锁时间
     *
     * @return {@link long}
     */
    long leaseTime() default 30L;

    /**
     * 等待琐时间，默认不等待，直接失败
     * @return long
     */
    long waitTime() default -1L;

    /**
     * 时间单位
     * @return {@link TimeUnit }
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;
}
